import Style from './render/style';
import Template from './render/template';
import Layout from './engine';
import WxOpenSdk from './sdk/WxOpenDataSdk';
import MockData from './render/mockData';

// 微信 or 抖音
let _env = GameGlobal.wx || GameGlobal.tt;
// 获取主域和开放数据域共享的 sharedCanvas
let sharedCanvas = _env.getSharedCanvas();
// 获取共享画布的2D上下文
let sharedContext = sharedCanvas.getContext('2d');

/**
 * 绘制排行榜
 * @param {string} templateData 模板数据
 */
function draw(templateData) {
    Layout.clear();
    Layout.init(templateData, Style);
    Layout.layout(sharedContext);
}

/**
 * 更新视口
 * @param {any} data 主域发送的消息
 */
function updateViewPort(data) {
    Layout.updateViewPort({
        x: data.x,
        y: data.y,
        width: data.width,
        height: data.height,
    });
}


// 监听主域发送的消息，当消息类型为'engine'且事件为'viewport'时，更新视口并重绘
_env.onMessage(async data => {
    console.log('收到消息', data);
    const friendRankKey = "score";
    if (data.type === 'engine' && data.event === 'viewport') {
        // 更新视口
        updateViewPort(data);
    }

    // 更新跳跃高度数据
    if (data.type === 'event' && data.event === 'setScore') {
        WxOpenSdk.setUserScore(friendRankKey, data.data);
    }

    // 微信好友排行榜
    if (data.type === 'event' && data.event === 'friendRank') {
        let rankList = await WxOpenSdk.getFriendRankList(friendRankKey, data.data)
        console.log('收到好友排行榜数据', rankList);

        // 模板数据
        let templateData = Template.anonymous(rankList);
        if (templateData === null) {
            templateData = Template.anonymous(MockData)
        }

        // 绘制
        draw(templateData);
    }

    
    // 云开发全国排行榜
    if (data.type === 'event' && data.event === 'allRank') {
        let rankList = await WxOpenSdk.getAllRankList(data.data)
        console.log('收到全国排行榜数据', rankList);

        // 模板数据
        let templateData = null;
        if (rankList === null) {
            templateData = Template.anonymous(MockData)
        } else {
            templateData = Template.anonymous(rankList);
        }

        // 绘制
        draw(templateData);
    }
});

